<?
/* Se asegura que el archivo es incluido por el index */
	defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Organizacion_exe( $this );

	class Organizacion_exe extends Exe
	{
	function Organizacion_exe( &$oModule )
		{
			$this->Exe( $oModule );
		}
	function updateStar()
		{
			$ncOrganizacion = getParam( 'ncOrganizacion' );
			$bEstrella = getParam( 'bEstrella' );
			if ( $ncOrganizacion )
			{
				$this->oDatabase->update( "atOrganizacion", "bEstrella", $bEstrella, "WHERE", "ncOrganizacion", $ncOrganizacion );
			}
		}
	function updateTag()
		{
			$ncOrganizacion = getParam( 'ncOrganizacion' );
			$ncRotulo = getParam( 'ncRotulo' );
			$cNewItem = getParam( 'newItem' );
			if ( $cNewItem ) 
			{
				$ncRotulo = $this->oDatabase->nextKey( "atRotuloOrganizacion", "ncRotulo" );
				$bOk = $this->oDatabase->insert( "atRotuloOrganizacion", 
										"ncRotulo", $ncRotulo, "cdRotulo", $cNewItem );
			}			
			if ( $ncOrganizacion && $ncRotulo )
			{
				$bOk = $this->oDatabase->insert( "atOrganizacionRotulo",
										"ncRotulo", $ncRotulo, "ncOrganizacion", $ncOrganizacion );
			}
		}
	// MODIFICAR_UNA_ORGANIZACION
	function update()
		{
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'Organizacion_frm' );
			extract( $oForm->getFieldArray() );
			// Agrega o Modifica el Domicilio
				$oDomicilio = $this->oModule->loadClass( 'Domicilio_exe' );
				$ncDomicilio = $oDomicilio->save();
				if ( $ncDomicilio )
				{
					// Verifica si el domicilio tenia domicilio
					$cSql = "SELECT count(*) FROM atOrganizacionDomicilio WHERE ncOrganizacion = $ncOrganizacion AND ncDomicilio = $ncDomicilio" ;
					$nqDomicilioExistente = $this->oDatabase->getData($cSql);
				// Si el Domicilio es nuevo => relaciona Organizacion con el Domicilio
					if ( $nqDomicilioExistente > 0)
					{
						$this->oDatabase->update("atOrganizacionDomicilio",
										"ncTipoDomicilio", DOMICILIO_PRINCIPAL,
										"WHERE",
										"ncOrganizacion", $ncOrganizacion,
										"ncDomicilio", $ncDomicilio );
					} else
					{
						$this->oDatabase->insert("atOrganizacionDomicilio",
										"ncOrganizacion", $ncOrganizacion,
										"dDesde", date("Y-m-d"),
										"ncTipoDomicilio", DOMICILIO_PRINCIPAL,
										"ncDomicilio", $ncDomicilio );
					}
				}
			// Modifica el Registro de Organizacion
				$this->oDatabase->update("atOrganizacion",
								"ncVisibilidad", $ncVisibilidad,
								"ncGrupo", obtenerMiGrupo(),
								"cdOrganizacion", $cdOrganizacion,
								"ncOrganizacionPadre", $ncOrganizacionPadre,
								"cSigla", $cSigla,
								"ncNaturalezaJuridica", $ncNaturalezaJuridica,
								"ncUsuario", $this->oModule->oUserSession->getUser(),
								"dModificacion", Date("Y-m-d") ,
								"cEmail", $cEmail,
								"cPaginaWeb", $cPaginaWeb,
								"WHERE",
								"ncOrganizacion", $ncOrganizacion );
			// Agrega los rotulos
			$this->oDatabase->delete( "atOrganizacionRotulo", "ncOrganizacion", $ncOrganizacion );
			$aRotulo = $oForm->aFields['aRotulo']->getValue();
			foreach ( $aRotulo as $ncRotulo )
			{
				$this->oDatabase->insert( "atOrganizacionRotulo",
										"ncRotulo", $ncRotulo,
										"ncOrganizacion", $ncOrganizacion );
			}
			$this->setInputData( $ncOrganizacion, $cdOrganizacion );
			$oForm->reset();
		}
	// AGREGAR_UNA_ORGANIZACION
	function insert()
		{
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'Organizacion_frm' );
			extract( $oForm->getFieldArray() );
			// Verifica si ya existe una organizacion con el mismo nombre
			$cSql = "SELECT count(*) FROM atOrganizacion WHERE cdOrganizacion='$cdOrganizacion' ";
			$nqExiste = $this->oDatabase->getData( $cSql ) ;
			if ( $nqExiste > 0 )
			{
				addMessage ( "Ya existe una organizacion llamada $cdOrganizacion. Por favor verifique que no se generen registros duplicados" );
			}
			// Agrega o Modifica el Domicilio
				$oDomicilio = $this->oModule->loadClass( 'Domicilio_exe' );
				$ncDomicilio = $oDomicilio->save();
			// Agrega la Organizacion
				$ncOrganizacion = $this->oDatabase->nextKey("atOrganizacion", "ncOrganizacion");
				$this->oDatabase->insert("atOrganizacion",
									"cdOrganizacion", $cdOrganizacion,
									"ncOrganizacionPadre", $ncOrganizacionPadre,
									"ncNaturalezaJuridica", $ncNaturalezaJuridica,
									"cSigla", $cSigla,
									"ncVisibilidad", $ncVisibilidad,
									"ncGrupo", obtenerMiGrupo(),
									"ncUsuario", $this->oModule->oUserSession->getUser(),
									"dDesde", Date("Y-m-d") ,
									"dModificacion", Date("Y-m-d") ,
									"bBaja", 0,
									"cEmail", $cEmail,
									"cPaginaWeb", $cPaginaWeb,
									"ncOrganizacion", $ncOrganizacion );
				// Agrega el Registro que relaciona Organizacion con el Domicilio
				if ( $ncDomicilio )
				{
					$this->oDatabase->insert("atOrganizacionDomicilio",
									"ncOrganizacion", $ncOrganizacion,
									"dDesde", date("Y-m-d"),
									"bPorOmision", 1,
									"ncTipoDomicilio", DOMICILIO_PRINCIPAL,
									"ncDomicilio", $ncDomicilio );
				}
			$aRotulo = $oForm->aFields['aRotulo']->getValue();
			foreach ( $aRotulo as $ncRotulo )
			{
				$this->oDatabase->insert( "atOrganizacionRotulo",
										"ncRotulo", $ncRotulo,
										"ncOrganizacion", $ncOrganizacion );
			}
			$this->setInputData( $ncOrganizacion, $cdOrganizacion );
			$this->oModule->setRedirect( MODIFICAR_UNA_ORGANIZACION, "ncOrganizacion=$ncOrganizacion");
		}
	// ELIMINAR_UNA_ORGANIZACION
	function delete()
		{
			$ncOrganizacion = getParam( 'ncOrganizacion' );
			if ( $ncOrganizacion )
			{
				$ncMiGrupo = obtenerMiGrupo();
				list( $ncGrupo, $ncVisibilidad ) = $this->oDatabase->getArray( "SELECT ncGrupo, ncVisibilidad FROM atOrganizacion WHERE ncOrganizacion = $ncOrganizacion ");
				if ($ncVisibilidad == VISIBILIDAD_PUBLICO || $ncGrupo == $ncMiGrupo)
				{
					$this->oDatabase->update( "atOrganizacion", "bBaja", 1, "dModificacion", Date("Y-m-d") ,  "ncUsuario", $this->oModule->oUserSession->getUser(), "WHERE", "ncOrganizacion", $ncOrganizacion );
					addMessage('Se elimino la organizacion');
				} else
				{
					addMessage('No tiene permisos para eliminar la organizacion');
				}
			}
		}
	}
?>
